home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / AMIGA / (A)P / (A)P1.ADF / Polygon / polyg3.c < prev    next >
C/C++ Source or Header  |  1987-05-25  |  6KB  |  207 lines

  1. /*polygons: Amiga version by Terry W. Gintz*/
  2.  
  3. int drawpoly(),stopcheck();
  4. extern short int x1[50][15],y1[50][15],x2[50][27],y2[50][27],x3[50][51];
  5. extern short int y3[50][51];
  6. poly()
  7. {
  8.    int ex;
  9.  
  10.    SetAPen(rp,4);
  11.    SetDrMd(w->RPort,JAM1);
  12.    RectFill(w->RPort,0,0,320,200);
  13.    SetDrMd(w->RPort,JAM2);
  14.    ex=0;
  15.    while (ex==0){
  16.       ex=drawpoly();
  17.    }
  18. }
  19.  
  20. int drawpoly()
  21. {
  22.    int ex,l,ns,pix,xon,xoff,yon,yoff,x,xstep,y,ystep,x4,y4,x5,y5;
  23.    register short int i,inc,nc,ls,s;
  24.  
  25.    ex=0;
  26.    pix=RangeRand(5);
  27.    xstep=80;
  28.    ystep=50;
  29.    switch(pix){
  30.       case 0:
  31.          xon=120;
  32.          xoff=200;
  33.          yon=100;
  34.          yoff=100;
  35.          break;
  36.       case 1:
  37.          xon=80;
  38.          xoff=240;
  39.          yon=100;
  40.          yoff=100;
  41.          break;
  42.       case 2:
  43.          xon=120;
  44.          xoff=200;
  45.          yon=75;
  46.          yoff=125;
  47.          break;
  48.       case 3:
  49.          xon=80;
  50.          xoff=240;
  51.          yon=75;
  52.          yoff=125;
  53.          break;
  54.       case 4:
  55.          xon=80;
  56.          xoff=240;
  57.          yon=50;
  58.          yoff=150;
  59.          break;
  60.    }
  61.    l=RangeRand(3);
  62.    ns=RangeRand(3);
  63.    s=4;
  64.    for (ls=0;ls<50;ls+=2){
  65.       ++s;
  66.       ex=stopcheck();
  67.       if (ex==1)
  68.          break;
  69.       for (inc=xon;inc<=xoff;inc+=xstep){
  70.          x=inc;
  71.          for (nc=yon;nc<=yoff;nc+=ystep){
  72.             y=nc;
  73.             switch(l){
  74.                case 0:
  75.                   switch(ns){
  76.                      case 0:
  77.                         x4=x+x1[ls][0];
  78.                         y4=y;
  79.                         for (i=1;i<5;i++){
  80.                            x5=x+x1[ls][i];
  81.                            y5=y+y1[ls][i];
  82.                            SetAPen(rp,s);
  83.                            Move(rp,x4,y4);
  84.                            Draw(rp,x5,y5);
  85.                            y4=y5;
  86.                            x4=x5;
  87.                         }
  88.                         break;
  89.                      case 1:
  90.                         x4=x+x2[ls][0];
  91.                         y4=y;
  92.                         for (i=1;i<9;i++){
  93.                            x5=x+x2[ls][i];
  94.                            y5=y+y2[ls][i];
  95.                            SetAPen(rp,s);
  96.                            Move(rp,x4,y4);
  97.                            Draw(rp,x5,y5);
  98.                            y4=y5;
  99.                            x4=x5;
  100.                         }
  101.                         break;
  102.                      case 2:
  103.                         x4=x+x3[ls][0];
  104.                         y4=y;
  105.                         for (i=1;i<17;i++){
  106.                            x5=x+x3[ls][i];
  107.                            y5=y+y3[ls][i];
  108.                            SetAPen(rp,s);
  109.                            Move(rp,x4,y4);
  110.                            Draw(rp,x5,y5);
  111.                            y4=y5;
  112.                            x4=x5;
  113.                         }
  114.                         break;
  115.                   }
  116.                   break;
  117.                case 1:
  118.                   switch(ns){
  119.                      case 0:
  120.                         x4=x+x1[ls][5];
  121.                         y4=y;
  122.                         for (i=6;i<10;i++){
  123.                            x5=x+x1[ls][i];
  124.                            y5=y+y1[ls][i];
  125.                            SetAPen(rp,s);
  126.                            Move(rp,x4,y4);
  127.                            Draw(rp,x5,y5);
  128.                            y4=y5;
  129.                            x4=x5;
  130.                         }
  131.                         break;
  132.                      case 1:
  133.                         x4=x+x2[ls][9];
  134.                         y4=y;
  135.                         for (i=10;i<18;i++){
  136.                            x5=x+x2[ls][i];
  137.                            y5=y+y2[ls][i];
  138.                            SetAPen(rp,s);
  139.                            Move(rp,x4,y4);
  140.                            Draw(rp,x5,y5);
  141.                            y4=y5;
  142.                            x4=x5;
  143.                         }
  144.                         break;
  145.                      case 2:
  146.                         x4=x+x3[ls][17];
  147.                         y4=y;
  148.                         for (i=18;i<34;i++){
  149.                            x5=x+x3[ls][i];
  150.                            y5=y+y3[ls][i];
  151.                            SetAPen(rp,s);
  152.                            Move(rp,x4,y4);
  153.                            Draw(rp,x5,y5);
  154.                            y4=y5;
  155.                            x4=x5;
  156.                         }
  157.                         break;
  158.                   }
  159.                   break;
  160.                case 2:
  161.                   switch(ns){
  162.                      case 0:
  163.                         x4=x+x1[ls][10];
  164.                         y4=y;
  165.                         for (i=11;i<15;i++){
  166.                            x5=x+x1[ls][i];
  167.                            y5=y+y1[ls][i];
  168.                            SetAPen(rp,s);
  169.                            Move(rp,x4,y4);
  170.                            Draw(rp,x5,y5);
  171.                            y4=y5;
  172.                            x4=x5;
  173.                         }
  174.                         break;
  175.                      case 1:
  176.                         x4=x+x2[ls][18];
  177.                         y4=y;
  178.                         for (i=19;i<27;i++){
  179.                            x5=x+x2[ls][i];
  180.                            y5=y+y2[ls][i];
  181.                            SetAPen(rp,s);
  182.                            Move(rp,x4,y4);
  183.                            Draw(rp,x5,y5);
  184.                            y4=y5;
  185.                            x4=x5;
  186.                         }
  187.                         break;
  188.                      case 2:
  189.                         x4=x+x3[ls][34];
  190.                         y4=y;
  191.                         for (i=35;i<51;i++){
  192.                            x5=x+x3[ls][i];
  193.                            y5=y+y3[ls][i];
  194.                            SetAPen(rp,s);
  195.                            Move(rp,x4,y4);
  196.                            Draw(rp,x5,y5);
  197.                            y4=y5;
  198.                            x4=x5;
  199.                         }
  200.                   }
  201.             }
  202.          }
  203.       }
  204.    }
  205.    return(ex);
  206. }
  207.